The present invention relates generally to the field of memory and in particular to a method of reading a register from a volatile memory module.
Portable electronic devices have become ubiquitous accoutrements to modern life. Two modern trends in portable electronic devices are increased functionality and decreased size. Increased functionality demands higher computing power and more memory. The decreasing size of portable electronic devices places a premium on power consumption, as smaller batteries can store and deliver less power. Thus, advances that increase performance and decrease power consumption are advantageous for portable electronic devices.
Most portable electronic devices include Dynamic Random Access Memory (DRAM) to store instructions and data for a processor or other controller. DRAM is the most cost-effective solid-state memory technology available. While the price per bit is lower for mass storage technologies such as disk drives, the high access latency, high power consumption, and high sensitivity to shock or vibration preclude the use of mass storage drives in many portable electronic device applications.
Synchronous DRAM (SDRAM) offers both improved performance and simplified interface design over conventional DRAM by aligning all control signals and data transfer cycles to clock edges. Double data rate (DDR) SDRAM allows data transfers on both rising and falling edges of the clock, providing still higher performance.
Most SDRAM modules include a mode register to store configurable parameters such as CAS latency, burst length, and the like. As SDRAM technology increased in complexity and configurability, many SDRAM modules added an extended mode register to store additional configurable parameters such as write length, drive strength, and the like. Both the mode register and extended mode register are write-only. That is, there is no provision for a controller to read the contents of these registers. With the introduction of the mode and extended registers, a DRAM module for the first time stored information other than the data written to and read from the DRAM array. Consequently, a new data transfer operation was required.
Many SDRAM modules include Mode Register Set (MRS) and Extended Mode Register Set (EMRS) operations to load the registers with the desired parameters. These operations are commonly implemented by simultaneously driving the CS, RAS, CAS, and WE control signals low, selecting between the MRS and EMRS with bank address bits, and providing the information to be written to the selected register on address lines A0-A11. In most implementations, all DRAM banks must be inactive at the time of the MRS or EMRS command, and no further operation may be directed to the SDRAM module for a specified minimum duration, such as six clock cycles. These restrictions do not adversely impact the SDRAM performance, since due to the nature of the mode and extended mode registers, they are written once upon initialization and never changed.
The third-generation Graphics Double Data Rate industry specification (GDDR3) provides the ability to read information from an SDRAM module other than data stored in the DRAM array. As one option during an EMRS operation, the SDRAM may output a vendor code and version number on the data bus (EMRS write information is transmitted on the address bus). All of the restrictions of the EMRS operation—that all banks be idle and that the operation is followed by a minimum duration, such as six clock cycles, of inactivity—must be observed. Due to the static nature of the information (vendor ID and version number), it only needs to be read once, such as during initialization, and the limitations of the EMRS operation do not significantly affect performance.
A basic aspect of DRAM operation is that the capacitive charge storing data at each bit position must be periodically renewed to preserve the data state. The DRAM array is refreshed by row; some SDRAM modules may refresh the same row in multiple DRAM banks at the same time. Each row in the DRAM array must be refreshed within a specified refresh period. The DRAM rows may be refreshed sequentially once per refresh period, known as a burst refresh. However, this prevents access to the DRAM array for the time necessary to cycle through all of the rows, and imposes a performance degradation. Alternatively, refresh cycles directed to each row may be spread evenly throughout the refresh period, interspersed with read and write data transfers. This is known as distributed refresh. Distributed refresh is more commonly implemented, as it imposes less of a performance penalty.
The total required refresh period, and hence the spacing of refresh cycles in a distributed refresh operation, depends on the temperature of the DRAM array dye. As a general rule of thumb, the refresh rate must be doubled for every 10° C. increase in the DRAM array die temperature. The refresh period specified for a SDRAM module is typically that required by the DRAM at its highest anticipated operation temperature. Thus, whenever the DRAM array die is at a lower temperature, the refresh period is longer, and the distributed refresh cycles may be spaced further apart, thus reducing their impact on DRAM read and write accesses. This would both improve processor performance and reduce power consumption by eliminating unnecessary refresh activity.
Co-pending U.S. patent application Ser. No. 11/165,950, filed on Jun. 23, 2005, assigned to the assignee of the present invention and incorporation herein by reference in its entirety, discloses a SDRAM module having a temperature sensor. A controller, such as a processor, may periodically read the output of the temperature sensor and calculate the actual minimum required refresh rate. At least during initial operation—that is, before the SDRAM module stabilizes at its operating temperature—the controller may periodically read the temperature sensor, such as every four to six microseconds, to dynamically optimize the refresh rate.
The output of a temperature sensor is one form of data read from a SDRAM module that is not stored in the DRAM array. The only known means for reading such information—“piggy backing” the read of vendor ID and version number on an EMRS operation, as provided in the GDDR3 specification—imposes unacceptable performance penalties. As described, in most implementations, all banks must be idle prior to the EMRS operation, and no commands may be issued for many clock cycles after the EMRS operation. Ideally, the read of data not stored in the DRAM array should be performed in a synchronous data transfer that is substantially similar to a read operation directed to data that is within the DRAM array. This would allow the read of information not stored in the DRAM array to be seamlessly interspersed with reads and writes of data that is stored in the DRAM array (i.e., normal DRAM accesses).